package cn.ldf.keepaccounts.service;

import cn.ldf.keepaccounts.entity.pojo.Members;
import cn.ldf.keepaccounts.entity.vo.MembersAvatarVO;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * 房间成员表(Members)表服务接口
 *
 * @author 清峰
 * @since 2025-02-17 10:12:34
 */
public interface MembersService extends IService<Members> {
    /**
     * 根据房间id查询房间成员
     * @param roomId 房间id
     * @return 结果集
     */
    List<Members> getAllByRoomId(String roomId);
    /**
     * 根据房间id查询未结算的成员
     * @param roomId 房间id
     * @return 结果集
     */
    List<Members> getNoSettledByRoomId(String roomId);
    /**
     * 根据房间id查询房间成员头像
     * @param roomId 房间id
     * @return 结果集
     */
    List<MembersAvatarVO> getAvatarByRoomId(String roomId);
    /**
     * 添加房间成员
     * @param members 房间成员
     * @return 结果集
     */
    Members addMembers(Members members);
    /**
     * 修改房间成员昵称
     * @param members 房间成员
     * @return 结果集
     */
    Members updateMembersNickname(Members members);

    /**
     * 根据房间id和openId查询房间成员是否结算
     * @param roomId 房间id
     * @param openId openId
     * @return 结果集
     */
    Boolean isSettledByRoomIdAndOpenId(String roomId, String openId);

    /**
     * 根据id修改成员结算状态
     * @param id ID
     * @return 结果集
     */
    Boolean updateSettledById(Long id);

    /**
     * 根据房间id和openId查询房间成员
     * @param roomId 房间id
     * @param openId openId
     * @return 结果集
     */
    Members getByRoomIdAndOpenId(String roomId, String openId);
    /**
     * 根据房间id列表查询房间成员与用户信息
     * @param roomIds 房间id列表
     * @return 结果集
     */
    List<MembersAvatarVO> getMembersAvatarListByRoomIds(List<String> roomIds);
    /**
     * 根据房间id列表查询房间成员
     * @param roomIds 房间id列表
     * @return 结果集
     */
    List<Members> getListByRoomIds(List<String> roomIds);

    List<MembersAvatarVO> getListMembersByIsWinn(String roomId, String currentOpenId);
}

